<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>gdsl: Doubly-linked list manipulation module</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>


</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">gdsl
   &#160;<span id="projectnumber">1.7</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.6.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('group__gdsl__list.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">Doubly-linked list manipulation module</div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct _gdsl_list *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">GDSL doubly-linked list type.  <a href="#ga6e449755578066b63cbe063a2daec25b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct _gdsl_list_cursor *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">GDSL doubly-linked list cursor type.  <a href="#ga4a74cd75b7a6917479c5e3cfeb1eecf1"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga7fe9720535ab73f5f6f8d22485a48fbb">gdsl_list_alloc</a> (const char *NAME, <a class="el" href="group__gdsl__types.html#ga32a9b4e8b9665183c2741d28a5ced64f">gdsl_alloc_func_t</a> ALLOC_F, <a class="el" href="group__gdsl__types.html#ga2c6b3f96b291b5b39d2799f93e350053">gdsl_free_func_t</a> FREE_F)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new list.  <a href="#ga7fe9720535ab73f5f6f8d22485a48fbb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga9d220b3b117386ae70fe7fdb6e0cef5b">gdsl_list_free</a> (<a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroy a list.  <a href="#ga9d220b3b117386ae70fe7fdb6e0cef5b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga1e53326dafde19d04ce482136e92bac4">gdsl_list_flush</a> (<a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Flush a list.  <a href="#ga1e53326dafde19d04ce482136e92bac4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga2f1ed945e51ab5ce07b04786aeed88c0">gdsl_list_get_name</a> (const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the name of a list.  <a href="#ga2f1ed945e51ab5ce07b04786aeed88c0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga9c34ac44da309b004570530c8cec8a0e">ulong</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga636671bc6ec6b13027ee13d7c0be9a35">gdsl_list_get_size</a> (const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the size of a list.  <a href="#ga636671bc6ec6b13027ee13d7c0be9a35"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#gaf6a258d8f3ee5206d682d799316314b1">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga3f5c4d273ddfa07c8824f4fe50146224">gdsl_list_is_empty</a> (const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if a list is empty.  <a href="#ga3f5c4d273ddfa07c8824f4fe50146224"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga9cde045e90d61f1e09774422ee83cc4d">gdsl_list_get_head</a> (const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the head of a list.  <a href="#ga9cde045e90d61f1e09774422ee83cc4d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga5ead481779e0fb8fb62463c528e8a956">gdsl_list_get_tail</a> (const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the tail of a list.  <a href="#ga5ead481779e0fb8fb62463c528e8a956"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga0c7b82f86f64119875e784bf65c8b635">gdsl_list_set_name</a> (<a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L, const char *NEW_NAME)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the name of a list.  <a href="#ga0c7b82f86f64119875e784bf65c8b635"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#gabff17ac2c1b2253dde8a2c9e060d201d">gdsl_list_insert_head</a> (<a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L, void *VALUE)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert an element at the head of a list.  <a href="#gabff17ac2c1b2253dde8a2c9e060d201d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga545a2c14092c059adcb65a9d71fb22c7">gdsl_list_insert_tail</a> (<a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L, void *VALUE)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert an element at the tail of a list.  <a href="#ga545a2c14092c059adcb65a9d71fb22c7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#gab986f8064fb7f1926ff602fffbd4fba7">gdsl_list_remove_head</a> (<a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove the head of a list.  <a href="#gab986f8064fb7f1926ff602fffbd4fba7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga955266bc7b44a78a77285ef6109b0d0b">gdsl_list_remove_tail</a> (<a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove the tail of a list.  <a href="#ga955266bc7b44a78a77285ef6109b0d0b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#gace9d2173b7256b8d60b0c8803a279d5d">gdsl_list_remove</a> (<a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L, <a class="el" href="group__gdsl__types.html#ga200177a9a1ac3f2363e228b0e5faeda7">gdsl_compare_func_t</a> COMP_F, const void *VALUE)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove a particular element from a list.  <a href="#gace9d2173b7256b8d60b0c8803a279d5d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#gabbdb732f3964806f63510f0b6136d3ca">gdsl_list_delete_head</a> (<a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete the head of a list.  <a href="#gabbdb732f3964806f63510f0b6136d3ca"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#gac508af7ad28e3c417d84a957834980a0">gdsl_list_delete_tail</a> (<a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete the tail of a list.  <a href="#gac508af7ad28e3c417d84a957834980a0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga0fe2d27934b7855d078b7d89e5df688e">gdsl_list_delete</a> (<a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L, <a class="el" href="group__gdsl__types.html#ga200177a9a1ac3f2363e228b0e5faeda7">gdsl_compare_func_t</a> COMP_F, const void *VALUE)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete a particular element from a list.  <a href="#ga0fe2d27934b7855d078b7d89e5df688e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#gac25a3fb66c9687d21f68fffec730c97a">gdsl_list_search</a> (const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L, <a class="el" href="group__gdsl__types.html#ga200177a9a1ac3f2363e228b0e5faeda7">gdsl_compare_func_t</a> COMP_F, const void *VALUE)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for a particular element into a list.  <a href="#gac25a3fb66c9687d21f68fffec730c97a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#gab56e1221556836f9a176077915fbd08d">gdsl_list_search_by_position</a> (const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L, <a class="el" href="group__gdsl__types.html#ga9c34ac44da309b004570530c8cec8a0e">ulong</a> POS)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for an element by its position in a list.  <a href="#gab56e1221556836f9a176077915fbd08d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#gad2b842ccc7f0ed732df149e4f493cc06">gdsl_list_search_max</a> (const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L, <a class="el" href="group__gdsl__types.html#ga200177a9a1ac3f2363e228b0e5faeda7">gdsl_compare_func_t</a> COMP_F)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for the greatest element of a list.  <a href="#gad2b842ccc7f0ed732df149e4f493cc06"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga3c57fcc4c77e4e42a1ec0794c0a9cc01">gdsl_list_search_min</a> (const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L, <a class="el" href="group__gdsl__types.html#ga200177a9a1ac3f2363e228b0e5faeda7">gdsl_compare_func_t</a> COMP_F)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for the lowest element of a list.  <a href="#ga3c57fcc4c77e4e42a1ec0794c0a9cc01"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga6b96f343d2657677bb72b4e3a6c32c35">gdsl_list_sort</a> (<a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L, <a class="el" href="group__gdsl__types.html#ga200177a9a1ac3f2363e228b0e5faeda7">gdsl_compare_func_t</a> COMP_F)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sort a list.  <a href="#ga6b96f343d2657677bb72b4e3a6c32c35"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#gaaa1aa93760c74b8868f598ae4762034f">gdsl_list_map_forward</a> (const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L, <a class="el" href="group__gdsl__types.html#ga2500bfaaec5df890e72b43f448f13ee8">gdsl_map_func_t</a> MAP_F, void *USER_DATA)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse a list from head to tail.  <a href="#gaaa1aa93760c74b8868f598ae4762034f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga9c92f66fdb2034a7d33905c16ba7a643">gdsl_list_map_backward</a> (const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L, <a class="el" href="group__gdsl__types.html#ga2500bfaaec5df890e72b43f448f13ee8">gdsl_map_func_t</a> MAP_F, void *USER_DATA)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse a list from tail to head.  <a href="#ga9c92f66fdb2034a7d33905c16ba7a643"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#gae26810b8edeb5a5ed2c3259fc425ac6f">gdsl_list_write</a> (const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L, <a class="el" href="group__gdsl__types.html#gafc7394b6c8e0a5bd92df75e24512dfd6">gdsl_write_func_t</a> WRITE_F, FILE *OUTPUT_FILE, void *USER_DATA)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Write all the elements of a list to a file.  <a href="#gae26810b8edeb5a5ed2c3259fc425ac6f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga1306d2d0c329dfae244505a1b2d9d4b9">gdsl_list_write_xml</a> (const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L, <a class="el" href="group__gdsl__types.html#gafc7394b6c8e0a5bd92df75e24512dfd6">gdsl_write_func_t</a> WRITE_F, FILE *OUTPUT_FILE, void *USER_DATA)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Write the content of a list to a file into XML.  <a href="#ga1306d2d0c329dfae244505a1b2d9d4b9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga8667ee72192ba06ef4f541cc1b925517">gdsl_list_dump</a> (const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L, <a class="el" href="group__gdsl__types.html#gafc7394b6c8e0a5bd92df75e24512dfd6">gdsl_write_func_t</a> WRITE_F, FILE *OUTPUT_FILE, void *USER_DATA)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Dump the internal structure of a list to a file.  <a href="#ga8667ee72192ba06ef4f541cc1b925517"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga73b9eca4fcca1679089c064c8db87961">gdsl_list_cursor_alloc</a> (const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> L)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new list cursor.  <a href="#ga73b9eca4fcca1679089c064c8db87961"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#gae38ef7ce486f88e741f85d009eedd705">gdsl_list_cursor_free</a> (<a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroy a list cursor.  <a href="#gae38ef7ce486f88e741f85d009eedd705"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga9d88424a9c60a3eb696e658f322a49f5">gdsl_list_cursor_move_to_head</a> (<a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Put a cursor on the head of its list.  <a href="#ga9d88424a9c60a3eb696e658f322a49f5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#gae2fe3f7ca5b07b6067534ae412f0faa4">gdsl_list_cursor_move_to_tail</a> (<a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Put a cursor on the tail of its list.  <a href="#gae2fe3f7ca5b07b6067534ae412f0faa4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga6bb6cc52796b87560a46be4a29480bf9">gdsl_list_cursor_move_to_value</a> (<a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C, <a class="el" href="group__gdsl__types.html#ga200177a9a1ac3f2363e228b0e5faeda7">gdsl_compare_func_t</a> COMP_F, void *VALUE)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Place a cursor on a particular element.  <a href="#ga6bb6cc52796b87560a46be4a29480bf9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga5f344c752896ec3b2bb41169e8e8b2c7">gdsl_list_cursor_move_to_position</a> (<a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C, <a class="el" href="group__gdsl__types.html#ga9c34ac44da309b004570530c8cec8a0e">ulong</a> POS)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Place a cursor on a element given by its position.  <a href="#ga5f344c752896ec3b2bb41169e8e8b2c7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga88e466cff5f8616b524f4b3d56e7b0d7">gdsl_list_cursor_step_forward</a> (<a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Move a cursor one step forward of its list.  <a href="#ga88e466cff5f8616b524f4b3d56e7b0d7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#gabeae22a3869ee192439f81b0271692b8">gdsl_list_cursor_step_backward</a> (<a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Move a cursor one step backward of its list.  <a href="#gabeae22a3869ee192439f81b0271692b8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#gaf6a258d8f3ee5206d682d799316314b1">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga87119e865865bdd531360a2768015aae">gdsl_list_cursor_is_on_head</a> (const <a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if a cursor is on the head of its list.  <a href="#ga87119e865865bdd531360a2768015aae"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#gaf6a258d8f3ee5206d682d799316314b1">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga497fa4777c9cf2b0e5a16b058eb01429">gdsl_list_cursor_is_on_tail</a> (const <a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if a cursor is on the tail of its list.  <a href="#ga497fa4777c9cf2b0e5a16b058eb01429"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#gaf6a258d8f3ee5206d682d799316314b1">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga34a69c63788fd552638a4599a29d9e03">gdsl_list_cursor_has_succ</a> (const <a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if a cursor has a successor.  <a href="#ga34a69c63788fd552638a4599a29d9e03"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#gaf6a258d8f3ee5206d682d799316314b1">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga307534d83c52108e940d2990d98ff4eb">gdsl_list_cursor_has_pred</a> (const <a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if a cursor has a predecessor.  <a href="#ga307534d83c52108e940d2990d98ff4eb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga2e2fb42a84aa537609d1a863f050b8e3">gdsl_list_cursor_set_content</a> (<a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C, <a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> E)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the content of the cursor.  <a href="#ga2e2fb42a84aa537609d1a863f050b8e3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga772f3a881da6a6f541a3f77c75ee3e6e">gdsl_list_cursor_get_content</a> (const <a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the content of a cursor.  <a href="#ga772f3a881da6a6f541a3f77c75ee3e6e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga2dbc65933800f63bda62742ba7687ea8">gdsl_list_cursor_insert_after</a> (<a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C, void *VALUE)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert a new element after a cursor.  <a href="#ga2dbc65933800f63bda62742ba7687ea8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#gaf4d5b11daa472d6f51b01434bdb84bf4">gdsl_list_cursor_insert_before</a> (<a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C, void *VALUE)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert a new element before a cursor.  <a href="#gaf4d5b11daa472d6f51b01434bdb84bf4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga252d9851234a36a35381d67f7af58475">gdsl_list_cursor_remove</a> (<a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Removec the element under a cursor.  <a href="#ga252d9851234a36a35381d67f7af58475"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga807fb4304da01d90edb6a953a2bea6d3">gdsl_list_cursor_remove_after</a> (<a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Removec the element after a cursor.  <a href="#ga807fb4304da01d90edb6a953a2bea6d3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga943103f832e42a88562d7b4f92fe93ac">gdsl_list_cursor_remove_before</a> (<a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove the element before a cursor.  <a href="#ga943103f832e42a88562d7b4f92fe93ac"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga2a117b1330a07b55e17bb7ff777166d4">gdsl_list_cursor_delete</a> (<a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete the element under a cursor.  <a href="#ga2a117b1330a07b55e17bb7ff777166d4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga4532feb1ac3ae1f0e30cf163e8e23abb">gdsl_list_cursor_delete_after</a> (<a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete the element after a cursor.  <a href="#ga4532feb1ac3ae1f0e30cf163e8e23abb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__list.html#ga5ab0916bcc19bf25cb498f52417ba0dd">gdsl_list_cursor_delete_before</a> (<a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> C)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete the element before the cursor of a list.  <a href="#ga5ab0916bcc19bf25cb498f52417ba0dd"></a><br/></td></tr>
</table>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="ga6e449755578066b63cbe063a2daec25b"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_t" ref="ga6e449755578066b63cbe063a2daec25b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct _gdsl_list* <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>GDSL doubly-linked list type. </p>
<p>This type is voluntary opaque. Variables of this kind could'nt be directly used, but by the functions of this module. </p>

<p>Definition at line <a class="el" href="gdsl__list_8h_source.html#l00051">51</a> of file <a class="el" href="gdsl__list_8h_source.html">gdsl_list.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga4a74cd75b7a6917479c5e3cfeb1eecf1"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_t" ref="ga4a74cd75b7a6917479c5e3cfeb1eecf1" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct _gdsl_list_cursor* <a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>GDSL doubly-linked list cursor type. </p>
<p>This type is voluntary opaque. Variables of this kind could'nt be directly used, but by the functions of this module. </p>

<p>Definition at line <a class="el" href="gdsl__list_8h_source.html#l00059">59</a> of file <a class="el" href="gdsl__list_8h_source.html">gdsl_list.h</a>.</p>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga7fe9720535ab73f5f6f8d22485a48fbb"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_alloc" ref="ga7fe9720535ab73f5f6f8d22485a48fbb" args="(const char *NAME, gdsl_alloc_func_t ALLOC_F, gdsl_free_func_t FREE_F)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> <a class="el" href="group__gdsl__list.html#ga7fe9720535ab73f5f6f8d22485a48fbb">gdsl_list_alloc</a> </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>NAME</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__gdsl__types.html#ga32a9b4e8b9665183c2741d28a5ced64f">gdsl_alloc_func_t</a>&#160;</td>
          <td class="paramname"><em>ALLOC_F</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__gdsl__types.html#ga2c6b3f96b291b5b39d2799f93e350053">gdsl_free_func_t</a>&#160;</td>
          <td class="paramname"><em>FREE_F</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a new list. </p>
<p>Allocate a new list data structure which name is set to a copy of NAME. The function pointers ALLOC_F and FREE_F could be used to respectively, alloc and free elements in the list. These pointers could be set to NULL to use the default ones:</p>
<ul>
<li>the default ALLOC_F simply returns its argument</li>
<li>the default FREE_F does nothing</li>
</ul>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>nothing </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">NAME</td><td>The name of the new list to create </td></tr>
    <tr><td class="paramname">ALLOC_F</td><td>Function to alloc element when inserting it in the list </td></tr>
    <tr><td class="paramname">FREE_F</td><td>Function to free element when removing it from the list </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the newly allocated list in case of success. </dd>
<dd>
NULL in case of insufficient memory. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga9d220b3b117386ae70fe7fdb6e0cef5b" title="Destroy a list.">gdsl_list_free()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga1e53326dafde19d04ce482136e92bac4" title="Flush a list.">gdsl_list_flush()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga9d220b3b117386ae70fe7fdb6e0cef5b"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_free" ref="ga9d220b3b117386ae70fe7fdb6e0cef5b" args="(gdsl_list_t L)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="group__gdsl__list.html#ga9d220b3b117386ae70fe7fdb6e0cef5b">gdsl_list_free</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Destroy a list. </p>
<p>Flush and destroy the list L. All the elements of L are freed using L's FREE_F function passed to <a class="el" href="group__gdsl__list.html#ga7fe9720535ab73f5f6f8d22485a48fbb" title="Create a new list.">gdsl_list_alloc()</a>.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( |L| ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to destroy </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga7fe9720535ab73f5f6f8d22485a48fbb" title="Create a new list.">gdsl_list_alloc()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga1e53326dafde19d04ce482136e92bac4" title="Flush a list.">gdsl_list_flush()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga1e53326dafde19d04ce482136e92bac4"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_flush" ref="ga1e53326dafde19d04ce482136e92bac4" args="(gdsl_list_t L)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="group__gdsl__list.html#ga1e53326dafde19d04ce482136e92bac4">gdsl_list_flush</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Flush a list. </p>
<p>Destroy all the elements of the list L by calling L's FREE_F function passed to <a class="el" href="group__gdsl__list.html#ga7fe9720535ab73f5f6f8d22485a48fbb" title="Create a new list.">gdsl_list_alloc()</a>. L is not deallocated itself and L's name is not modified.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( |L| ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to flush </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga7fe9720535ab73f5f6f8d22485a48fbb" title="Create a new list.">gdsl_list_alloc()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga9d220b3b117386ae70fe7fdb6e0cef5b" title="Destroy a list.">gdsl_list_free()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga2f1ed945e51ab5ce07b04786aeed88c0"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_get_name" ref="ga2f1ed945e51ab5ce07b04786aeed88c0" args="(const gdsl_list_t L)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* <a class="el" href="group__gdsl__list.html#ga2f1ed945e51ab5ce07b04786aeed88c0">gdsl_list_get_name</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the name of a list. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t </dd></dl>
<dl class="post"><dt><b>Postcondition:</b></dt><dd>The returned string MUST NOT be freed. </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to get the name from </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the name of the list L. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga0c7b82f86f64119875e784bf65c8b635" title="Set the name of a list.">gdsl_list_set_name()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga636671bc6ec6b13027ee13d7c0be9a35"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_get_size" ref="ga636671bc6ec6b13027ee13d7c0be9a35" args="(const gdsl_list_t L)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga9c34ac44da309b004570530c8cec8a0e">ulong</a> <a class="el" href="group__gdsl__list.html#ga636671bc6ec6b13027ee13d7c0be9a35">gdsl_list_get_size</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the size of a list. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to get the size from </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of elements of the list L (noted |L|). </dd></dl>

</div>
</div>
<a class="anchor" id="ga3f5c4d273ddfa07c8824f4fe50146224"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_is_empty" ref="ga3f5c4d273ddfa07c8824f4fe50146224" args="(const gdsl_list_t L)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#gaf6a258d8f3ee5206d682d799316314b1">bool</a> <a class="el" href="group__gdsl__list.html#ga3f5c4d273ddfa07c8824f4fe50146224">gdsl_list_is_empty</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Check if a list is empty. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to check </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>TRUE if the list L is empty. </dd>
<dd>
FALSE if the list L is not empty. </dd></dl>

</div>
</div>
<a class="anchor" id="ga9cde045e90d61f1e09774422ee83cc4d"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_get_head" ref="ga9cde045e90d61f1e09774422ee83cc4d" args="(const gdsl_list_t L)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#ga9cde045e90d61f1e09774422ee83cc4d">gdsl_list_get_head</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the head of a list. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to get the head from </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the element at L's head position if L is not empty. The returned element is not removed from L. </dd>
<dd>
NULL if the list L is empty. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga5ead481779e0fb8fb62463c528e8a956" title="Get the tail of a list.">gdsl_list_get_tail()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga5ead481779e0fb8fb62463c528e8a956"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_get_tail" ref="ga5ead481779e0fb8fb62463c528e8a956" args="(const gdsl_list_t L)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#ga5ead481779e0fb8fb62463c528e8a956">gdsl_list_get_tail</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the tail of a list. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to get the tail from </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the element at L's tail position if L is not empty. The returned element is not removed from L. </dd>
<dd>
NULL if L is empty. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga9cde045e90d61f1e09774422ee83cc4d" title="Get the head of a list.">gdsl_list_get_head()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga0c7b82f86f64119875e784bf65c8b635"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_set_name" ref="ga0c7b82f86f64119875e784bf65c8b635" args="(gdsl_list_t L, const char *NEW_NAME)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> <a class="el" href="group__gdsl__list.html#ga0c7b82f86f64119875e784bf65c8b635">gdsl_list_set_name</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>NEW_NAME</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the name of a list. </p>
<p>Changes the previous name of the list L to a copy of NEW_NAME.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to change the name </td></tr>
    <tr><td class="paramname">NEW_NAME</td><td>The new name of L </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the modified list in case of success. </dd>
<dd>
NULL in case of failure. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga2f1ed945e51ab5ce07b04786aeed88c0" title="Get the name of a list.">gdsl_list_get_name()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gabff17ac2c1b2253dde8a2c9e060d201d"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_insert_head" ref="gabff17ac2c1b2253dde8a2c9e060d201d" args="(gdsl_list_t L, void *VALUE)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#gabff17ac2c1b2253dde8a2c9e060d201d">gdsl_list_insert_head</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>VALUE</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Insert an element at the head of a list. </p>
<p>Allocate a new element E by calling L's ALLOC_F function on VALUE. ALLOC_F is the function pointer passed to <a class="el" href="group__gdsl__list.html#ga7fe9720535ab73f5f6f8d22485a48fbb" title="Create a new list.">gdsl_list_alloc()</a>. The new element E is then inserted at the header position of the list L.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to insert into </td></tr>
    <tr><td class="paramname">VALUE</td><td>The value used to make the new element to insert into L </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the inserted element E in case of success. </dd>
<dd>
NULL in case of failure. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga545a2c14092c059adcb65a9d71fb22c7" title="Insert an element at the tail of a list.">gdsl_list_insert_tail()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#gab986f8064fb7f1926ff602fffbd4fba7" title="Remove the head of a list.">gdsl_list_remove_head()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga955266bc7b44a78a77285ef6109b0d0b" title="Remove the tail of a list.">gdsl_list_remove_tail()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#gace9d2173b7256b8d60b0c8803a279d5d" title="Remove a particular element from a list.">gdsl_list_remove()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga545a2c14092c059adcb65a9d71fb22c7"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_insert_tail" ref="ga545a2c14092c059adcb65a9d71fb22c7" args="(gdsl_list_t L, void *VALUE)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#ga545a2c14092c059adcb65a9d71fb22c7">gdsl_list_insert_tail</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>VALUE</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Insert an element at the tail of a list. </p>
<p>Allocate a new element E by calling L's ALLOC_F function on VALUE. ALLOC_F is the function pointer passed to <a class="el" href="group__gdsl__list.html#ga7fe9720535ab73f5f6f8d22485a48fbb" title="Create a new list.">gdsl_list_alloc()</a>. The new element E is then inserted at the footer position of the list L.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to insert into </td></tr>
    <tr><td class="paramname">VALUE</td><td>The value used to make the new element to insert into L </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the inserted element E in case of success. </dd>
<dd>
NULL in case of failure. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#gabff17ac2c1b2253dde8a2c9e060d201d" title="Insert an element at the head of a list.">gdsl_list_insert_head()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#gab986f8064fb7f1926ff602fffbd4fba7" title="Remove the head of a list.">gdsl_list_remove_head()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga955266bc7b44a78a77285ef6109b0d0b" title="Remove the tail of a list.">gdsl_list_remove_tail()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#gace9d2173b7256b8d60b0c8803a279d5d" title="Remove a particular element from a list.">gdsl_list_remove()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gab986f8064fb7f1926ff602fffbd4fba7"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_remove_head" ref="gab986f8064fb7f1926ff602fffbd4fba7" args="(gdsl_list_t L)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#gab986f8064fb7f1926ff602fffbd4fba7">gdsl_list_remove_head</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Remove the head of a list. </p>
<p>Remove the element at the head of the list L.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to remove the head from </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the removed element in case of success. </dd>
<dd>
NULL in case of L is empty. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#gabff17ac2c1b2253dde8a2c9e060d201d" title="Insert an element at the head of a list.">gdsl_list_insert_head()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga545a2c14092c059adcb65a9d71fb22c7" title="Insert an element at the tail of a list.">gdsl_list_insert_tail()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga955266bc7b44a78a77285ef6109b0d0b" title="Remove the tail of a list.">gdsl_list_remove_tail()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#gace9d2173b7256b8d60b0c8803a279d5d" title="Remove a particular element from a list.">gdsl_list_remove()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga955266bc7b44a78a77285ef6109b0d0b"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_remove_tail" ref="ga955266bc7b44a78a77285ef6109b0d0b" args="(gdsl_list_t L)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#ga955266bc7b44a78a77285ef6109b0d0b">gdsl_list_remove_tail</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Remove the tail of a list. </p>
<p>Remove the element at the tail of the list L.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to remove the tail from </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the removed element in case of success. </dd>
<dd>
NULL in case of L is empty. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#gabff17ac2c1b2253dde8a2c9e060d201d" title="Insert an element at the head of a list.">gdsl_list_insert_head()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga545a2c14092c059adcb65a9d71fb22c7" title="Insert an element at the tail of a list.">gdsl_list_insert_tail()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#gab986f8064fb7f1926ff602fffbd4fba7" title="Remove the head of a list.">gdsl_list_remove_head()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#gace9d2173b7256b8d60b0c8803a279d5d" title="Remove a particular element from a list.">gdsl_list_remove()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gace9d2173b7256b8d60b0c8803a279d5d"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_remove" ref="gace9d2173b7256b8d60b0c8803a279d5d" args="(gdsl_list_t L, gdsl_compare_func_t COMP_F, const void *VALUE)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#gace9d2173b7256b8d60b0c8803a279d5d">gdsl_list_remove</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__gdsl__types.html#ga200177a9a1ac3f2363e228b0e5faeda7">gdsl_compare_func_t</a>&#160;</td>
          <td class="paramname"><em>COMP_F</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&#160;</td>
          <td class="paramname"><em>VALUE</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Remove a particular element from a list. </p>
<p>Search into the list L for the first element E equal to VALUE by using COMP_F. If E is found, it is removed from L and then returned.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( |L| / 2 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t &amp; COMP_F != NULL </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to remove the element from </td></tr>
    <tr><td class="paramname">COMP_F</td><td>The comparison function used to find the element to remove </td></tr>
    <tr><td class="paramname">VALUE</td><td>The value used to compare the element to remove with </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the founded element E if it was found. </dd>
<dd>
NULL in case the searched element E was not found. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#gabff17ac2c1b2253dde8a2c9e060d201d" title="Insert an element at the head of a list.">gdsl_list_insert_head()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga545a2c14092c059adcb65a9d71fb22c7" title="Insert an element at the tail of a list.">gdsl_list_insert_tail()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#gab986f8064fb7f1926ff602fffbd4fba7" title="Remove the head of a list.">gdsl_list_remove_head()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga955266bc7b44a78a77285ef6109b0d0b" title="Remove the tail of a list.">gdsl_list_remove_tail()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gabbdb732f3964806f63510f0b6136d3ca"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_delete_head" ref="gabbdb732f3964806f63510f0b6136d3ca" args="(gdsl_list_t L)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> <a class="el" href="group__gdsl__list.html#gabbdb732f3964806f63510f0b6136d3ca">gdsl_list_delete_head</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Delete the head of a list. </p>
<p>Remove the header element from the list L and deallocates it using the FREE_F function passed to <a class="el" href="group__gdsl__list.html#ga7fe9720535ab73f5f6f8d22485a48fbb" title="Create a new list.">gdsl_list_alloc()</a>.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to destroy the head from </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the modified list L in case of success. </dd>
<dd>
NULL if L is empty. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga7fe9720535ab73f5f6f8d22485a48fbb" title="Create a new list.">gdsl_list_alloc()</a> </dd>
<dd>
gdsl_list_destroy_tail() </dd>
<dd>
gdsl_list_destroy() </dd></dl>

</div>
</div>
<a class="anchor" id="gac508af7ad28e3c417d84a957834980a0"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_delete_tail" ref="gac508af7ad28e3c417d84a957834980a0" args="(gdsl_list_t L)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> <a class="el" href="group__gdsl__list.html#gac508af7ad28e3c417d84a957834980a0">gdsl_list_delete_tail</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Delete the tail of a list. </p>
<p>Remove the footer element from the list L and deallocates it using the FREE_F function passed to <a class="el" href="group__gdsl__list.html#ga7fe9720535ab73f5f6f8d22485a48fbb" title="Create a new list.">gdsl_list_alloc()</a>.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to destroy the tail from </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the modified list L in case of success. </dd>
<dd>
NULL if L is empty. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga7fe9720535ab73f5f6f8d22485a48fbb" title="Create a new list.">gdsl_list_alloc()</a> </dd>
<dd>
gdsl_list_destroy_head() </dd>
<dd>
gdsl_list_destroy() </dd></dl>

</div>
</div>
<a class="anchor" id="ga0fe2d27934b7855d078b7d89e5df688e"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_delete" ref="ga0fe2d27934b7855d078b7d89e5df688e" args="(gdsl_list_t L, gdsl_compare_func_t COMP_F, const void *VALUE)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> <a class="el" href="group__gdsl__list.html#ga0fe2d27934b7855d078b7d89e5df688e">gdsl_list_delete</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__gdsl__types.html#ga200177a9a1ac3f2363e228b0e5faeda7">gdsl_compare_func_t</a>&#160;</td>
          <td class="paramname"><em>COMP_F</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&#160;</td>
          <td class="paramname"><em>VALUE</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Delete a particular element from a list. </p>
<p>Search into the list L for the first element E equal to VALUE by using COMP_F. If E is found, it is removed from L and deallocated using the FREE_F function passed to <a class="el" href="group__gdsl__list.html#ga7fe9720535ab73f5f6f8d22485a48fbb" title="Create a new list.">gdsl_list_alloc()</a>.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( |L| / 2 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t &amp; COMP_F != NULL </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to destroy the element from </td></tr>
    <tr><td class="paramname">COMP_F</td><td>The comparison function used to find the element to destroy </td></tr>
    <tr><td class="paramname">VALUE</td><td>The value used to compare the element to destroy with </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the modified list L if the element is found. </dd>
<dd>
NULL if the element to destroy is not found. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga7fe9720535ab73f5f6f8d22485a48fbb" title="Create a new list.">gdsl_list_alloc()</a> </dd>
<dd>
gdsl_list_destroy_head() </dd>
<dd>
gdsl_list_destroy_tail() </dd></dl>

</div>
</div>
<a class="anchor" id="gac25a3fb66c9687d21f68fffec730c97a"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_search" ref="gac25a3fb66c9687d21f68fffec730c97a" args="(const gdsl_list_t L, gdsl_compare_func_t COMP_F, const void *VALUE)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#gac25a3fb66c9687d21f68fffec730c97a">gdsl_list_search</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__gdsl__types.html#ga200177a9a1ac3f2363e228b0e5faeda7">gdsl_compare_func_t</a>&#160;</td>
          <td class="paramname"><em>COMP_F</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&#160;</td>
          <td class="paramname"><em>VALUE</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Search for a particular element into a list. </p>
<p>Search the first element E equal to VALUE in the list L, by using COMP_F to compare all L's element with.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( |L| / 2 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t &amp; COMP_F != NULL </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to search the element in </td></tr>
    <tr><td class="paramname">COMP_F</td><td>The comparison function used to compare L's element with VALUE </td></tr>
    <tr><td class="paramname">VALUE</td><td>The value to compare L's elemenst with </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the first founded element E in case of success. </dd>
<dd>
NULL in case the searched element E was not found. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#gab56e1221556836f9a176077915fbd08d" title="Search for an element by its position in a list.">gdsl_list_search_by_position()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#gad2b842ccc7f0ed732df149e4f493cc06" title="Search for the greatest element of a list.">gdsl_list_search_max()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga3c57fcc4c77e4e42a1ec0794c0a9cc01" title="Search for the lowest element of a list.">gdsl_list_search_min()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gab56e1221556836f9a176077915fbd08d"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_search_by_position" ref="gab56e1221556836f9a176077915fbd08d" args="(const gdsl_list_t L, ulong POS)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#gab56e1221556836f9a176077915fbd08d">gdsl_list_search_by_position</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__gdsl__types.html#ga9c34ac44da309b004570530c8cec8a0e">ulong</a>&#160;</td>
          <td class="paramname"><em>POS</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Search for an element by its position in a list. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( |L| / 2 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t &amp; POS &gt; 0 &amp; POS &lt;= |L| </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to search the element in </td></tr>
    <tr><td class="paramname">POS</td><td>The position where is the element to search </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the element at the POS-th position in the list L. </dd>
<dd>
NULL if POS &gt; |L| or POS &lt;= 0. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#gac25a3fb66c9687d21f68fffec730c97a" title="Search for a particular element into a list.">gdsl_list_search()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#gad2b842ccc7f0ed732df149e4f493cc06" title="Search for the greatest element of a list.">gdsl_list_search_max()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga3c57fcc4c77e4e42a1ec0794c0a9cc01" title="Search for the lowest element of a list.">gdsl_list_search_min()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gad2b842ccc7f0ed732df149e4f493cc06"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_search_max" ref="gad2b842ccc7f0ed732df149e4f493cc06" args="(const gdsl_list_t L, gdsl_compare_func_t COMP_F)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#gad2b842ccc7f0ed732df149e4f493cc06">gdsl_list_search_max</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__gdsl__types.html#ga200177a9a1ac3f2363e228b0e5faeda7">gdsl_compare_func_t</a>&#160;</td>
          <td class="paramname"><em>COMP_F</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Search for the greatest element of a list. </p>
<p>Search the greatest element of the list L, by using COMP_F to compare L's elements with.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( |L| ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t &amp; COMP_F != NULL </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to search the element in </td></tr>
    <tr><td class="paramname">COMP_F</td><td>The comparison function to use to compare L's element with </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the highest element of L, by using COMP_F function. </dd>
<dd>
NULL if L is empty. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#gac25a3fb66c9687d21f68fffec730c97a" title="Search for a particular element into a list.">gdsl_list_search()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#gab56e1221556836f9a176077915fbd08d" title="Search for an element by its position in a list.">gdsl_list_search_by_position()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga3c57fcc4c77e4e42a1ec0794c0a9cc01" title="Search for the lowest element of a list.">gdsl_list_search_min()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga3c57fcc4c77e4e42a1ec0794c0a9cc01"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_search_min" ref="ga3c57fcc4c77e4e42a1ec0794c0a9cc01" args="(const gdsl_list_t L, gdsl_compare_func_t COMP_F)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#ga3c57fcc4c77e4e42a1ec0794c0a9cc01">gdsl_list_search_min</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__gdsl__types.html#ga200177a9a1ac3f2363e228b0e5faeda7">gdsl_compare_func_t</a>&#160;</td>
          <td class="paramname"><em>COMP_F</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Search for the lowest element of a list. </p>
<p>Search the lowest element of the list L, by using COMP_F to compare L's elements with.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( |L| ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t &amp; COMP_F != NULL </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to search the element in </td></tr>
    <tr><td class="paramname">COMP_F</td><td>The comparison function to use to compare L's element with </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the lowest element of L, by using COMP_F function. </dd>
<dd>
NULL if L is empty. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#gac25a3fb66c9687d21f68fffec730c97a" title="Search for a particular element into a list.">gdsl_list_search()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#gab56e1221556836f9a176077915fbd08d" title="Search for an element by its position in a list.">gdsl_list_search_by_position()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#gad2b842ccc7f0ed732df149e4f493cc06" title="Search for the greatest element of a list.">gdsl_list_search_max()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga6b96f343d2657677bb72b4e3a6c32c35"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_sort" ref="ga6b96f343d2657677bb72b4e3a6c32c35" args="(gdsl_list_t L, gdsl_compare_func_t COMP_F)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a> <a class="el" href="group__gdsl__list.html#ga6b96f343d2657677bb72b4e3a6c32c35">gdsl_list_sort</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__gdsl__types.html#ga200177a9a1ac3f2363e228b0e5faeda7">gdsl_compare_func_t</a>&#160;</td>
          <td class="paramname"><em>COMP_F</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sort a list. </p>
<p>Sort the list L using COMP_F to order L's elements.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( |L| * log( |L| ) ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t &amp; COMP_F != NULL &amp; L must not contains elements that are equals </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to sort </td></tr>
    <tr><td class="paramname">COMP_F</td><td>The comparison function used to order L's elements </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the sorted list L. </dd></dl>

</div>
</div>
<a class="anchor" id="gaaa1aa93760c74b8868f598ae4762034f"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_map_forward" ref="gaaa1aa93760c74b8868f598ae4762034f" args="(const gdsl_list_t L, gdsl_map_func_t MAP_F, void *USER_DATA)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#gaaa1aa93760c74b8868f598ae4762034f">gdsl_list_map_forward</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__gdsl__types.html#ga2500bfaaec5df890e72b43f448f13ee8">gdsl_map_func_t</a>&#160;</td>
          <td class="paramname"><em>MAP_F</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>USER_DATA</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Parse a list from head to tail. </p>
<p>Parse all elements of the list L from head to tail. The MAP_F function is called on each L's element with USER_DATA argument. If MAP_F returns GDSL_MAP_STOP, then <a class="el" href="group__gdsl__list.html#gaaa1aa93760c74b8868f598ae4762034f" title="Parse a list from head to tail.">gdsl_list_map_forward()</a> stops and returns its last examinated element.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( |L| ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t &amp; MAP_F != NULL </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to parse </td></tr>
    <tr><td class="paramname">MAP_F</td><td>The map function to apply on each L's element </td></tr>
    <tr><td class="paramname">USER_DATA</td><td>User's datas passed to MAP_F </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the first element for which MAP_F returns GDSL_MAP_STOP. </dd>
<dd>
NULL when the parsing is done. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga9c92f66fdb2034a7d33905c16ba7a643" title="Parse a list from tail to head.">gdsl_list_map_backward()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga9c92f66fdb2034a7d33905c16ba7a643"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_map_backward" ref="ga9c92f66fdb2034a7d33905c16ba7a643" args="(const gdsl_list_t L, gdsl_map_func_t MAP_F, void *USER_DATA)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#ga9c92f66fdb2034a7d33905c16ba7a643">gdsl_list_map_backward</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__gdsl__types.html#ga2500bfaaec5df890e72b43f448f13ee8">gdsl_map_func_t</a>&#160;</td>
          <td class="paramname"><em>MAP_F</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>USER_DATA</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Parse a list from tail to head. </p>
<p>Parse all elements of the list L from tail to head. The MAP_F function is called on each L's element with USER_DATA argument. If MAP_F returns GDSL_MAP_STOP then <a class="el" href="group__gdsl__list.html#ga9c92f66fdb2034a7d33905c16ba7a643" title="Parse a list from tail to head.">gdsl_list_map_backward()</a> stops and returns its last examinated element.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( |L| ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t &amp; MAP_F != NULL </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to parse </td></tr>
    <tr><td class="paramname">MAP_F</td><td>The map function to apply on each L's element </td></tr>
    <tr><td class="paramname">USER_DATA</td><td>User's datas passed to MAP_F </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the first element for which MAP_F returns GDSL_MAP_STOP. </dd>
<dd>
NULL when the parsing is done. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#gaaa1aa93760c74b8868f598ae4762034f" title="Parse a list from head to tail.">gdsl_list_map_forward()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gae26810b8edeb5a5ed2c3259fc425ac6f"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_write" ref="gae26810b8edeb5a5ed2c3259fc425ac6f" args="(const gdsl_list_t L, gdsl_write_func_t WRITE_F, FILE *OUTPUT_FILE, void *USER_DATA)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="group__gdsl__list.html#gae26810b8edeb5a5ed2c3259fc425ac6f">gdsl_list_write</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__gdsl__types.html#gafc7394b6c8e0a5bd92df75e24512dfd6">gdsl_write_func_t</a>&#160;</td>
          <td class="paramname"><em>WRITE_F</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">FILE *&#160;</td>
          <td class="paramname"><em>OUTPUT_FILE</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>USER_DATA</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Write all the elements of a list to a file. </p>
<p>Write the elements of the list L to OUTPUT_FILE, using WRITE_F function. Additionnal USER_DATA argument could be passed to WRITE_F.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( |L| ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t &amp; OUTPUT_FILE != NULL &amp; WRITE_F != NULL </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to write. </td></tr>
    <tr><td class="paramname">WRITE_F</td><td>The write function. </td></tr>
    <tr><td class="paramname">OUTPUT_FILE</td><td>The file where to write L's elements. </td></tr>
    <tr><td class="paramname">USER_DATA</td><td>User's datas passed to WRITE_F. </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga1306d2d0c329dfae244505a1b2d9d4b9" title="Write the content of a list to a file into XML.">gdsl_list_write_xml()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga8667ee72192ba06ef4f541cc1b925517" title="Dump the internal structure of a list to a file.">gdsl_list_dump()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga1306d2d0c329dfae244505a1b2d9d4b9"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_write_xml" ref="ga1306d2d0c329dfae244505a1b2d9d4b9" args="(const gdsl_list_t L, gdsl_write_func_t WRITE_F, FILE *OUTPUT_FILE, void *USER_DATA)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="group__gdsl__list.html#ga1306d2d0c329dfae244505a1b2d9d4b9">gdsl_list_write_xml</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__gdsl__types.html#gafc7394b6c8e0a5bd92df75e24512dfd6">gdsl_write_func_t</a>&#160;</td>
          <td class="paramname"><em>WRITE_F</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">FILE *&#160;</td>
          <td class="paramname"><em>OUTPUT_FILE</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>USER_DATA</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Write the content of a list to a file into XML. </p>
<p>Write the elements of the list L to OUTPUT_FILE, into XML language. If WRITE_F != NULL, then uses WRITE_F to write L's elements to OUTPUT_FILE. Additionnal USER_DATA argument could be passed to WRITE_F.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( |L| ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t &amp; OUTPUT_FILE != NULL </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to write. </td></tr>
    <tr><td class="paramname">WRITE_F</td><td>The write function. </td></tr>
    <tr><td class="paramname">OUTPUT_FILE</td><td>The file where to write L's elements. </td></tr>
    <tr><td class="paramname">USER_DATA</td><td>User's datas passed to WRITE_F. </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#gae26810b8edeb5a5ed2c3259fc425ac6f" title="Write all the elements of a list to a file.">gdsl_list_write()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga8667ee72192ba06ef4f541cc1b925517" title="Dump the internal structure of a list to a file.">gdsl_list_dump()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga8667ee72192ba06ef4f541cc1b925517"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_dump" ref="ga8667ee72192ba06ef4f541cc1b925517" args="(const gdsl_list_t L, gdsl_write_func_t WRITE_F, FILE *OUTPUT_FILE, void *USER_DATA)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="group__gdsl__list.html#ga8667ee72192ba06ef4f541cc1b925517">gdsl_list_dump</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__gdsl__types.html#gafc7394b6c8e0a5bd92df75e24512dfd6">gdsl_write_func_t</a>&#160;</td>
          <td class="paramname"><em>WRITE_F</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">FILE *&#160;</td>
          <td class="paramname"><em>OUTPUT_FILE</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>USER_DATA</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Dump the internal structure of a list to a file. </p>
<p>Dump the structure of the list L to OUTPUT_FILE. If WRITE_F != NULL, then uses WRITE_F to write L's elements to OUTPUT_FILE. Additionnal USER_DATA argument could be passed to WRITE_F.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( |L| ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t &amp; OUTPUT_FILE != NULL </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list to write. </td></tr>
    <tr><td class="paramname">WRITE_F</td><td>The write function. </td></tr>
    <tr><td class="paramname">OUTPUT_FILE</td><td>The file where to write L's elements. </td></tr>
    <tr><td class="paramname">USER_DATA</td><td>User's datas passed to WRITE_F. </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#gae26810b8edeb5a5ed2c3259fc425ac6f" title="Write all the elements of a list to a file.">gdsl_list_write()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga1306d2d0c329dfae244505a1b2d9d4b9" title="Write the content of a list to a file into XML.">gdsl_list_write_xml()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga73b9eca4fcca1679089c064c8db87961"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_alloc" ref="ga73b9eca4fcca1679089c064c8db87961" args="(const gdsl_list_t L)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> <a class="el" href="group__gdsl__list.html#ga73b9eca4fcca1679089c064c8db87961">gdsl_list_cursor_alloc</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__gdsl__list.html#ga6e449755578066b63cbe063a2daec25b">gdsl_list_t</a>&#160;</td>
          <td class="paramname"><em>L</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a new list cursor. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>L must be a valid gdsl_list_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>The list on wich the cursor is positionned. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the newly allocated list cursor in case of success. </dd>
<dd>
NULL in case of insufficient memory. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#gae38ef7ce486f88e741f85d009eedd705" title="Destroy a list cursor.">gdsl_list_cursor_free()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gae38ef7ce486f88e741f85d009eedd705"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_free" ref="gae38ef7ce486f88e741f85d009eedd705" args="(gdsl_list_cursor_t C)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="group__gdsl__list.html#gae38ef7ce486f88e741f85d009eedd705">gdsl_list_cursor_free</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Destroy a list cursor. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t. </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The list cursor to destroy. </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga73b9eca4fcca1679089c064c8db87961" title="Create a new list cursor.">gdsl_list_cursor_alloc()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga9d88424a9c60a3eb696e658f322a49f5"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_move_to_head" ref="ga9d88424a9c60a3eb696e658f322a49f5" args="(gdsl_list_cursor_t C)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="group__gdsl__list.html#ga9d88424a9c60a3eb696e658f322a49f5">gdsl_list_cursor_move_to_head</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Put a cursor on the head of its list. </p>
<p>Put the cursor C on the head of C's list. Does nothing if C's list is empty.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The cursor to use </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#gae2fe3f7ca5b07b6067534ae412f0faa4" title="Put a cursor on the tail of its list.">gdsl_list_cursor_move_to_tail()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gae2fe3f7ca5b07b6067534ae412f0faa4"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_move_to_tail" ref="gae2fe3f7ca5b07b6067534ae412f0faa4" args="(gdsl_list_cursor_t C)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="group__gdsl__list.html#gae2fe3f7ca5b07b6067534ae412f0faa4">gdsl_list_cursor_move_to_tail</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Put a cursor on the tail of its list. </p>
<p>Put the cursor C on the tail of C's list. Does nothing if C's list is empty.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The cursor to use </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga9d88424a9c60a3eb696e658f322a49f5" title="Put a cursor on the head of its list.">gdsl_list_cursor_move_to_head()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga6bb6cc52796b87560a46be4a29480bf9"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_move_to_value" ref="ga6bb6cc52796b87560a46be4a29480bf9" args="(gdsl_list_cursor_t C, gdsl_compare_func_t COMP_F, void *VALUE)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#ga6bb6cc52796b87560a46be4a29480bf9">gdsl_list_cursor_move_to_value</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__gdsl__types.html#ga200177a9a1ac3f2363e228b0e5faeda7">gdsl_compare_func_t</a>&#160;</td>
          <td class="paramname"><em>COMP_F</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>VALUE</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Place a cursor on a particular element. </p>
<p>Search a particular element E in the cursor's list L by comparing all list's elements to VALUE, by using COMP_F. If E is found, C is positionned on it.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( |L| / 2 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t &amp; COMP_F != NULL </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The cursor to put on the element E </td></tr>
    <tr><td class="paramname">COMP_F</td><td>The comparison function to search for E </td></tr>
    <tr><td class="paramname">VALUE</td><td>The value used to compare list's elements with </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the first founded element E in case it exists. </dd>
<dd>
NULL in case of element E is not found. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga5f344c752896ec3b2bb41169e8e8b2c7" title="Place a cursor on a element given by its position.">gdsl_list_cursor_move_to_position()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga5f344c752896ec3b2bb41169e8e8b2c7"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_move_to_position" ref="ga5f344c752896ec3b2bb41169e8e8b2c7" args="(gdsl_list_cursor_t C, ulong POS)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#ga5f344c752896ec3b2bb41169e8e8b2c7">gdsl_list_cursor_move_to_position</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__gdsl__types.html#ga9c34ac44da309b004570530c8cec8a0e">ulong</a>&#160;</td>
          <td class="paramname"><em>POS</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Place a cursor on a element given by its position. </p>
<p>Search for the POS-th element in the cursor's list L. In case this element exists, the cursor C is positionned on it.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( |L| / 2 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t &amp; POS &gt; 0 &amp; POS &lt;= |L| </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The cursor to put on the POS-th element </td></tr>
    <tr><td class="paramname">POS</td><td>The position of the element to move on </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the element at the POS-th position </dd>
<dd>
NULL if POS &lt;= 0 or POS &gt; |L| </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga6bb6cc52796b87560a46be4a29480bf9" title="Place a cursor on a particular element.">gdsl_list_cursor_move_to_value()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga88e466cff5f8616b524f4b3d56e7b0d7"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_step_forward" ref="ga88e466cff5f8616b524f4b3d56e7b0d7" args="(gdsl_list_cursor_t C)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="group__gdsl__list.html#ga88e466cff5f8616b524f4b3d56e7b0d7">gdsl_list_cursor_step_forward</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Move a cursor one step forward of its list. </p>
<p>Move the cursor C one node forward (from head to tail). Does nothing if C is already on its list's tail.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The cursor to use </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#gabeae22a3869ee192439f81b0271692b8" title="Move a cursor one step backward of its list.">gdsl_list_cursor_step_backward()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gabeae22a3869ee192439f81b0271692b8"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_step_backward" ref="gabeae22a3869ee192439f81b0271692b8" args="(gdsl_list_cursor_t C)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="group__gdsl__list.html#gabeae22a3869ee192439f81b0271692b8">gdsl_list_cursor_step_backward</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Move a cursor one step backward of its list. </p>
<p>Move the cursor C one node backward (from tail to head.) Does nothing if C is already on its list's head.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The cursor to use </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga88e466cff5f8616b524f4b3d56e7b0d7" title="Move a cursor one step forward of its list.">gdsl_list_cursor_step_forward()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga87119e865865bdd531360a2768015aae"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_is_on_head" ref="ga87119e865865bdd531360a2768015aae" args="(const gdsl_list_cursor_t C)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#gaf6a258d8f3ee5206d682d799316314b1">bool</a> <a class="el" href="group__gdsl__list.html#ga87119e865865bdd531360a2768015aae">gdsl_list_cursor_is_on_head</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Check if a cursor is on the head of its list. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The cursor to check </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>TRUE if C is on its list's head. </dd>
<dd>
FALSE if C is not on its lits's head. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga497fa4777c9cf2b0e5a16b058eb01429" title="Check if a cursor is on the tail of its list.">gdsl_list_cursor_is_on_tail()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga497fa4777c9cf2b0e5a16b058eb01429"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_is_on_tail" ref="ga497fa4777c9cf2b0e5a16b058eb01429" args="(const gdsl_list_cursor_t C)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#gaf6a258d8f3ee5206d682d799316314b1">bool</a> <a class="el" href="group__gdsl__list.html#ga497fa4777c9cf2b0e5a16b058eb01429">gdsl_list_cursor_is_on_tail</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Check if a cursor is on the tail of its list. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The cursor to check </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>TRUE if C is on its lists's tail. </dd>
<dd>
FALSE if C is not on its list's tail. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga87119e865865bdd531360a2768015aae" title="Check if a cursor is on the head of its list.">gdsl_list_cursor_is_on_head()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga34a69c63788fd552638a4599a29d9e03"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_has_succ" ref="ga34a69c63788fd552638a4599a29d9e03" args="(const gdsl_list_cursor_t C)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#gaf6a258d8f3ee5206d682d799316314b1">bool</a> <a class="el" href="group__gdsl__list.html#ga34a69c63788fd552638a4599a29d9e03">gdsl_list_cursor_has_succ</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Check if a cursor has a successor. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The cursor to check </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>TRUE if there exists an element after the cursor C. </dd>
<dd>
FALSE if there is no element after the cursor C. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga307534d83c52108e940d2990d98ff4eb" title="Check if a cursor has a predecessor.">gdsl_list_cursor_has_pred()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga307534d83c52108e940d2990d98ff4eb"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_has_pred" ref="ga307534d83c52108e940d2990d98ff4eb" args="(const gdsl_list_cursor_t C)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#gaf6a258d8f3ee5206d682d799316314b1">bool</a> <a class="el" href="group__gdsl__list.html#ga307534d83c52108e940d2990d98ff4eb">gdsl_list_cursor_has_pred</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Check if a cursor has a predecessor. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The cursor to check </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>TRUE if there exists an element before the cursor C. </dd>
<dd>
FALSE if there is no element before the cursor C. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga34a69c63788fd552638a4599a29d9e03" title="Check if a cursor has a successor.">gdsl_list_cursor_has_succ()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga2e2fb42a84aa537609d1a863f050b8e3"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_set_content" ref="ga2e2fb42a84aa537609d1a863f050b8e3" args="(gdsl_list_cursor_t C, gdsl_element_t E)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="group__gdsl__list.html#ga2e2fb42a84aa537609d1a863f050b8e3">gdsl_list_cursor_set_content</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a>&#160;</td>
          <td class="paramname"><em>E</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the content of the cursor. </p>
<p>Set C's element to E. The previous element is *NOT* deallocated. If it must be deallocated, <a class="el" href="group__gdsl__list.html#ga772f3a881da6a6f541a3f77c75ee3e6e" title="Get the content of a cursor.">gdsl_list_cursor_get_content()</a> could be used to get it in order to free it before.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The cursor in which the content must be modified. </td></tr>
    <tr><td class="paramname">E</td><td>The value used to modify C's content. </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga772f3a881da6a6f541a3f77c75ee3e6e" title="Get the content of a cursor.">gdsl_list_cursor_get_content()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga772f3a881da6a6f541a3f77c75ee3e6e"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_get_content" ref="ga772f3a881da6a6f541a3f77c75ee3e6e" args="(const gdsl_list_cursor_t C)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#ga772f3a881da6a6f541a3f77c75ee3e6e">gdsl_list_cursor_get_content</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the content of a cursor. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The cursor to get the content from. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the element contained in the cursor C. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga2e2fb42a84aa537609d1a863f050b8e3" title="Set the content of the cursor.">gdsl_list_cursor_set_content()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga2dbc65933800f63bda62742ba7687ea8"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_insert_after" ref="ga2dbc65933800f63bda62742ba7687ea8" args="(gdsl_list_cursor_t C, void *VALUE)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#ga2dbc65933800f63bda62742ba7687ea8">gdsl_list_cursor_insert_after</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>VALUE</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Insert a new element after a cursor. </p>
<p>A new element is created using ALLOC_F called on VALUE. ALLOC_F is the pointer passed to <a class="el" href="group__gdsl__list.html#ga7fe9720535ab73f5f6f8d22485a48fbb" title="Create a new list.">gdsl_list_alloc()</a>. If the returned value is not NULL, then the new element is placed after the cursor C. If C's list is empty, the element is inserted at the head position of C's list.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The cursor after which the new element must be inserted </td></tr>
    <tr><td class="paramname">VALUE</td><td>The value used to allocate the new element to insert </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the newly inserted element in case of success. </dd>
<dd>
NULL in case of failure. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#gaf4d5b11daa472d6f51b01434bdb84bf4" title="Insert a new element before a cursor.">gdsl_list_cursor_insert_before()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga807fb4304da01d90edb6a953a2bea6d3" title="Removec the element after a cursor.">gdsl_list_cursor_remove_after()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga943103f832e42a88562d7b4f92fe93ac" title="Remove the element before a cursor.">gdsl_list_cursor_remove_before()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="gaf4d5b11daa472d6f51b01434bdb84bf4"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_insert_before" ref="gaf4d5b11daa472d6f51b01434bdb84bf4" args="(gdsl_list_cursor_t C, void *VALUE)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#gaf4d5b11daa472d6f51b01434bdb84bf4">gdsl_list_cursor_insert_before</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>VALUE</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Insert a new element before a cursor. </p>
<p>A new element is created using ALLOC_F called on VALUE. ALLOC_F is the pointer passed to <a class="el" href="group__gdsl__list.html#ga7fe9720535ab73f5f6f8d22485a48fbb" title="Create a new list.">gdsl_list_alloc()</a>. If the returned value is not NULL, then the new element is placed before the cursor C. If C's list is empty, the element is inserted at the head position of C's list.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The cursor before which the new element must be inserted </td></tr>
    <tr><td class="paramname">VALUE</td><td>The value used to allocate the new element to insert </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the newly inserted element in case of success. </dd>
<dd>
NULL in case of failure. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga2dbc65933800f63bda62742ba7687ea8" title="Insert a new element after a cursor.">gdsl_list_cursor_insert_after()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga807fb4304da01d90edb6a953a2bea6d3" title="Removec the element after a cursor.">gdsl_list_cursor_remove_after()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga943103f832e42a88562d7b4f92fe93ac" title="Remove the element before a cursor.">gdsl_list_cursor_remove_before()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga252d9851234a36a35381d67f7af58475"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_remove" ref="ga252d9851234a36a35381d67f7af58475" args="(gdsl_list_cursor_t C)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#ga252d9851234a36a35381d67f7af58475">gdsl_list_cursor_remove</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Removec the element under a cursor. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t </dd></dl>
<dl class="post"><dt><b>Postcondition:</b></dt><dd>After this operation, the cursor is positionned on to its successor. </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The cursor to remove the content from. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the removed element if it exists. </dd>
<dd>
NULL if there is not element to remove. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga2dbc65933800f63bda62742ba7687ea8" title="Insert a new element after a cursor.">gdsl_list_cursor_insert_after()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#gaf4d5b11daa472d6f51b01434bdb84bf4" title="Insert a new element before a cursor.">gdsl_list_cursor_insert_before()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga252d9851234a36a35381d67f7af58475" title="Removec the element under a cursor.">gdsl_list_cursor_remove()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga943103f832e42a88562d7b4f92fe93ac" title="Remove the element before a cursor.">gdsl_list_cursor_remove_before()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga807fb4304da01d90edb6a953a2bea6d3"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_remove_after" ref="ga807fb4304da01d90edb6a953a2bea6d3" args="(gdsl_list_cursor_t C)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#ga807fb4304da01d90edb6a953a2bea6d3">gdsl_list_cursor_remove_after</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Removec the element after a cursor. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The cursor to remove the successor from. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the removed element if it exists. </dd>
<dd>
NULL if there is not element to remove. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga2dbc65933800f63bda62742ba7687ea8" title="Insert a new element after a cursor.">gdsl_list_cursor_insert_after()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#gaf4d5b11daa472d6f51b01434bdb84bf4" title="Insert a new element before a cursor.">gdsl_list_cursor_insert_before()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga252d9851234a36a35381d67f7af58475" title="Removec the element under a cursor.">gdsl_list_cursor_remove()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga943103f832e42a88562d7b4f92fe93ac" title="Remove the element before a cursor.">gdsl_list_cursor_remove_before()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga943103f832e42a88562d7b4f92fe93ac"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_remove_before" ref="ga943103f832e42a88562d7b4f92fe93ac" args="(gdsl_list_cursor_t C)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__types.html#ga0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> <a class="el" href="group__gdsl__list.html#ga943103f832e42a88562d7b4f92fe93ac">gdsl_list_cursor_remove_before</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Remove the element before a cursor. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The cursor to remove the predecessor from. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the removed element if it exists. </dd>
<dd>
NULL if there is not element to remove. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga2dbc65933800f63bda62742ba7687ea8" title="Insert a new element after a cursor.">gdsl_list_cursor_insert_after()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#gaf4d5b11daa472d6f51b01434bdb84bf4" title="Insert a new element before a cursor.">gdsl_list_cursor_insert_before()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga252d9851234a36a35381d67f7af58475" title="Removec the element under a cursor.">gdsl_list_cursor_remove()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga807fb4304da01d90edb6a953a2bea6d3" title="Removec the element after a cursor.">gdsl_list_cursor_remove_after()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga2a117b1330a07b55e17bb7ff777166d4"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_delete" ref="ga2a117b1330a07b55e17bb7ff777166d4" args="(gdsl_list_cursor_t C)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> <a class="el" href="group__gdsl__list.html#ga2a117b1330a07b55e17bb7ff777166d4">gdsl_list_cursor_delete</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Delete the element under a cursor. </p>
<p>Remove the element under the cursor C. The removed element is also deallocated using FREE_F passed to <a class="el" href="group__gdsl__list.html#ga7fe9720535ab73f5f6f8d22485a48fbb" title="Create a new list.">gdsl_list_alloc()</a>.</p>
<p>Complexity: O( 1 )</p>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The cursor to delete the content. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the cursor C if the element was removed. </dd>
<dd>
NULL if there is not element to remove. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga5ab0916bcc19bf25cb498f52417ba0dd" title="Delete the element before the cursor of a list.">gdsl_list_cursor_delete_before()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga4532feb1ac3ae1f0e30cf163e8e23abb" title="Delete the element after a cursor.">gdsl_list_cursor_delete_after()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga4532feb1ac3ae1f0e30cf163e8e23abb"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_delete_after" ref="ga4532feb1ac3ae1f0e30cf163e8e23abb" args="(gdsl_list_cursor_t C)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> <a class="el" href="group__gdsl__list.html#ga4532feb1ac3ae1f0e30cf163e8e23abb">gdsl_list_cursor_delete_after</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Delete the element after a cursor. </p>
<p>Remove the element after the cursor C. The removed element is also deallocated using FREE_F passed to <a class="el" href="group__gdsl__list.html#ga7fe9720535ab73f5f6f8d22485a48fbb" title="Create a new list.">gdsl_list_alloc()</a>.</p>
<p>Complexity: O( 1 )</p>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The cursor to delete the successor from. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the cursor C if the element was removed. </dd>
<dd>
NULL if there is not element to remove. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga2a117b1330a07b55e17bb7ff777166d4" title="Delete the element under a cursor.">gdsl_list_cursor_delete()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga5ab0916bcc19bf25cb498f52417ba0dd" title="Delete the element before the cursor of a list.">gdsl_list_cursor_delete_before()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ga5ab0916bcc19bf25cb498f52417ba0dd"></a><!-- doxytag: member="gdsl_list.h::gdsl_list_cursor_delete_before" ref="ga5ab0916bcc19bf25cb498f52417ba0dd" args="(gdsl_list_cursor_t C)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a> <a class="el" href="group__gdsl__list.html#ga5ab0916bcc19bf25cb498f52417ba0dd">gdsl_list_cursor_delete_before</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__gdsl__list.html#ga4a74cd75b7a6917479c5e3cfeb1eecf1">gdsl_list_cursor_t</a>&#160;</td>
          <td class="paramname"><em>C</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Delete the element before the cursor of a list. </p>
<p>Remove the element before the cursor C. The removed element is also deallocated using FREE_F passed to <a class="el" href="group__gdsl__list.html#ga7fe9720535ab73f5f6f8d22485a48fbb" title="Create a new list.">gdsl_list_alloc()</a>.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>C must be a valid gdsl_list_cursor_t </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">C</td><td>The cursor to delete the predecessor from. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the cursor C if the element was removed. </dd>
<dd>
NULL if there is not element to remove. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__list.html#ga2a117b1330a07b55e17bb7ff777166d4" title="Delete the element under a cursor.">gdsl_list_cursor_delete()</a> </dd>
<dd>
<a class="el" href="group__gdsl__list.html#ga4532feb1ac3ae1f0e30cf163e8e23abb" title="Delete the element after a cursor.">gdsl_list_cursor_delete_after()</a> </dd></dl>

</div>
</div>
</div><!-- contents -->
</div>
  <div id="nav-path" class="navpath">
    <ul>

    <li class="footer">Generated on Wed Jun 12 2013 18:18:47 for gdsl by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.6.1 </li>
   </ul>
 </div>


</body>
</html>
